Schnittstelle für C-Baustein oder C++-Baustein erstellen (Deprecated)

So erstellen Sie die Schnittstelle für Ihre →Bausteine in →C oder →C++:

  1. Im Projektexplorer: Erstellen Sie im Projekt eine neue ST-Schnittstelle.
    Ergebnis: Der ST-Editor wird für diese Datei geöffnet.

  2. Erstellen Sie den folgenden ST-Code am Anfang dieser Datei:

    Für C-Bausteine

    Syntax
    {extern_c}
     
    ( * optional_begin *) USING  Namespace_1;
    USING  Namespace_2; (* optional_end *)
     
    // optional: enter the supported platforms
    {Supported_Platforms := platform-1, platform-2, ... platform-n}
    Beispiel
    {extern_c}
    {Supported_Platforms := WindowsX86, Ce5Nmr20}

    Für C++-Bausteine

    Syntax
    {extern_cxx}
     
    ( * optional_begin *) USING  Namespace_1;
    USING  Namespace_2; (* optional_end *)
     
    // optional: enter the supported platforms
    {Supported_Platforms := platform-1, platform-2, ... platform-n}
    Beispiel
    {extern_cxx}
    {Supported_Platforms := WindowsX86}

     

    Bedeutung der Syntax:

    • Durch {extern_c} oder {extern_c} erkennt Neuron Power Engineer, dass Sie die Anwendung für die folgenden Bausteine in C oder C++ erstellen wollen. Dies gilt für alle Bausteine, die Sie anschließend in der Datei deklarieren. Erstellen Sie unterschiedliche Dateien, falls Sie Bausteine sowohl für C als auch für C++ deklarieren wollen.

    • Die USING-Namespace-Anweisung nach {extern_c} oder {extern_cxx} ist optional. Siehe "Namespaces in ST: Verwendung" für Details für diese Anweisung.

    • Durch {Supported_Platforms := ...} erkennt Neuron Power Engineer, dass die Bausteine und Datentypen nur für die definierten Plattformen gelten sollen. Dies gilt für alle Bausteine, die Sie anschließend in der Datei deklarieren. Falls Sie {Supported_Platforms := ...} nicht eintragen, gelten die deklarierten Elemente für alle Plattformen, die in Neuron Power Engineer möglich sind. Die Liste dieser Plattformen finden Sie unter "SPS im SPS-Objekt konfigurieren". Beachten Sie, dass die Plattform BuiltInPlc für {Supported_Platforms := ...} nicht möglich ist. Verwenden Sie am besten die Inhaltshilfe, um die gewünschten Plattformen einzutragen.

  3. Darunter deklarieren Sie die benötigten Bausteine (d.h., →Funktionsbausteine und/oder →Funktionen). Zusätzlich ist es auch möglich, →Datentypen in der Datei zu deklarieren.
    Die Deklaration dieser Elemente erfolgt wie gewohnt im ST-Editor. Informationen über die erforderliche Syntax finden Sie unter: "Deklaration eines Funktionsbausteins in ST", "Deklaration einer Funktion in ST", "Deklaration eines Datentyps in ST"
    Beachten Sie, dass die Deklaration eines →Programms in dieser Datei nicht möglich ist – aufgrund von {extern_c} oder {extern_cxx}.

  4. Zusätzlich pro Funktionsbaustein und/oder Funktion: Deklarieren Sie die Schnittstelle für diesen Baustein, z.B. →Eingangsvariablen und →Ausgangsvariablen.
    Diese Deklaration erfolgt wie gewohnt im ST-Editor. Informationen über die erforderliche Syntax finden Sie unter: "Deklaration von Variablen in ST"
    Beachten Sie, dass die Deklaration von →Ein-/Ausgangsvariablen→externen Variablen→temporären Variablen als auch von →Methoden und →Zuweisungen in dieser Datei nicht möglich sind – aufgrund von {extern_c} oder {extern_cxx}.

    Neuron empfiehlt Ihnen, alle Arten von Variablen in der Schnittstelle zu deklarieren – vor allem, wenn der Wert der Variablen für den Baustein von einer Ausführung der Anwendung zur nächsten erhalten bleiben soll. So vermeiden Sie Probleme, die andernfalls beim Aktualisieren einer geänderten Anwendung mit Hilfe des Ressourcen-Managers (auch als Reload der Anwendung bekannt) auftreten könnten.

    Falls Sie Variablen nur in einer C-Datei deklarieren und nachträgliche Änderungen der Baustein-Logik erforderlich werden, empfiehlt Ihnen Neuron, einen neuen Baustein mit der geänderten Logik zu erstellen – anstatt den Baustein tatsächlich zu ändern. In Folge ist es weiterhin möglich, den Ressourcen-Manager zum Aktualisieren der geänderten Anwendung zu verwenden.
    Eine Änderung von Bausteinen mit Variablen, die nur in der C-Datei enthalten sind, wird von Neuron Power Engineer nicht verhindert. Falls Sie solche Änderungen durchführen und den Ressourcen-Manager zum Aktualisieren der geänderten Anwendung verwenden, können unerwartete Fehler auftreten. So kann die Anwendung falsch ausgeführt oder terminiert werden, möglicherweise wird sogar die SPS terminiert. In solchen Fällen wird am besten die Anwendung neu erstellt und danach auf die SPS geladen.

    Beispiel für Deklaration eines C-Funktionsbausteins und einer C-Funktion (beide mit Schnittstelle)

    {extern_c}
    {Supported_Platforms := WindowsX86, Ce5Nmr20}
     
    FUNCTION_BLOCK MyCFB    // The function block 'MyCFB' has 2 inputs and 1 output.
      VAR_INPUT
        In1, In2 : INT;
      END_VAR
      VAR_OUTPUT
        Out : INT;
      END_VAR
    END_FUNCTION_BLOCK
     
    FUNCTION MyCFun : INT   // The function 'MyCFun' has 2 inputs and 2 outputs.
      VAR_INPUT
        In1, In2 : INT;
      END_VAR
      VAR_OUTPUT
        Out : INT;
      END_VAR
    END_FUNCTION
  5. Speichern Sie die ST-Schnittstelle mit {extern_c} oder {extern_cxx}.
    Dabei werden durch Neuron Power Engineer die Dateien mit C-Code und Header-Dateien für den C-Baustein oder C++-Baustein erstellt, und zwar pro deklariertem Funktionsbaustein bzw. deklarierter Funktion:

    Datei

    Position

    Hinweis

    LCfu___name.c oder LCfu___name.cppBezogen auf das Beispiel: LCfu___MyCFB.c und LCfu___MyCFun.c

    im Ordner, in der die ST-Schnittstelle erstellt wurde
    Beispiel: im Ordner src des Projekts

    Das ist die Datei, in der Sie anschließend Ihren C-Code oder C++-Code erstellen werden. name ist der Name des Funktionsbausteins bzw. der Funktion, wie er in der ST-Schnittstelle eingetragen ist.
    Ist diese Datei bereits vorhanden, wird sie beim Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} von Neuron Power Engineer nicht überschrieben. Diese Datei wird auch nicht gelöscht, falls Sie das Projekt bereinigen.

    LCfu___name.h
    Bezogen auf das Beispiel: LCfu___MyCFB.h und LCfu___MyCFun.h

    im Ordner src-gen des Projekts

    Das ist die Header-Datei für den C-Code. Bearbeiten Sie diese Datei nicht, da sie von Neuron Power Engineer beim Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} überschrieben wird. name ist der Name des Funktionsbausteins bzw. der Funktion, wie er in der ST-Schnittstelle eingetragen ist.

    Die Header-Dateien werden standardmäßig nicht im Projektexplorer angezeigt. Falls Sie diese Dateien im Projektexplorer anzeigen wollen: Klicken Sie auf  in der Symbolleiste des Projektexplorers, wählen Sie Filter und Anpassungen... und entfernen Sie die Markierung bei src-gen Ordner (unter Filter).

    Falls Sie die bereits erstellte Schnittstelle von C-Bausteinen nach dem ersten Speichern der ST-Schnittstelle mit {extern_c} oder {extern_cxx} ändern (z.B. den Namen des Bausteins ändern oder neue Ein-/Ausgänge erstellen), müssen Sie einige Schritte durchführen. Details: siehe "Anpassungen bei nachträglicher Änderung der Schnittstelle für C-Baustein oder C++-Baustein (Deprecated)".